﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace Dominio.Tests.Unitarios {
    [TestClass]
    public class UsuarioTeste {

        [TestMethod]
        public void criando_uma_nova_categoria_deve_aumentar_a_lista_no_usuario() {
            var usuario = new Usuario(string.Empty, string.Empty, string.Empty);
            Helper.IncluiPropriedade(usuario, "Categorias", new List<Categoria>{ new Categoria("Automóvel", usuario) });

            usuario.NovaCategoria("Mercado");
            Assert.IsTrue(usuario.Categorias.Count == 2);
        }

        [TestMethod]
        public void Criando_uma_subcategoria_em_uma_categoria_mae_esta_deve_aumentar_a_quantidade_de_categorias_filhas() {
            var usuario = new Usuario(string.Empty, string.Empty, string.Empty);
            Helper.IncluiPropriedade(usuario, "Categorias", new List<Categoria> { new Categoria("Automóvel", usuario) });

            usuario.NovaCategoria("Mercado");
            (Helper.ObtemPropriedade(usuario, "Categorias") as List<Categoria>).LastOrDefault().Id = 1;            

            usuario.NovaCategoria("Sub de Mercado", 1);
            var categoriaMae = (Helper.ObtemPropriedade(usuario, "Categorias") as List<Categoria>).LastOrDefault();

            Assert.IsTrue(usuario.ObtemSubCategorias(categoriaMae.Id).Any());
        }

        [TestMethod]
        public void criando_uma_nova_conta_deve_aumentar_a_lista_no_usuario() {
            var usuario = new Usuario(string.Empty, string.Empty, string.Empty);
            var conta = new Conta(0, string.Empty, usuario);
            Helper.IncluiPropriedade(conta, "Id", 1);
            Helper.IncluiPropriedade(usuario, "Contas", new List<Conta> { conta });

            usuario.NovaConta("dsaf");
            Assert.IsTrue(usuario.Contas.Count == 2);
        }
    }
}
